When called without the --cache option, pvscan lists PVs on the system,
like
.BR pvs (8)
or
.BR pvdisplay (8).

When the --cache and -aay options are used, pvscan records which PVs are
available on the system, and activates LVs in completed VGs.  A VG is
complete when pvscan sees that the final PV in the VG has appeared.  This
is used by event-based system startup (systemd, udev) to activate LVs.

The four main variations of this are:

.B pvscan --cache
.IR device

If device is present, lvm adds a record that the PV on device is online.
If device is not present, lvm removes the online record for the PV.
In most cases, the pvscan will only read the named devices.

.B pvscan --cache -aay
.IR device ...

This begins by performing the same steps as above.  Afterward, if the VG
for the specified PV is complete, then pvscan will activate LVs in the VG
(the same as vgchange -aay vgname would do.)

.B pvscan --cache

This first clears all existing PV online records, then scans all devices
on the system, adding PV online records for any PVs that are found.

.B pvscan --cache -aay

This begins by performing the same steps as pvscan --cache.  Afterward, it
activates LVs in any complete VGs.

To prevent devices from being scanned by pvscan --cache, add them
to
.BR lvm.conf (5)
.B devices/global_filter.
For more information, see:
.br
.B lvmconfig --withcomments devices/global_filter

Auto-activation of VGs or LVs can be enabled/disabled using:
.br
.BR lvm.conf (5)
.B activation/auto_activation_volume_list

For more information, see:
.br
.B lvmconfig --withcomments activation/auto_activation_volume_list

To disable auto-activation, explicitly set this list to an empty list,
i.e. auto_activation_volume_list = [ ].

When this setting is undefined (e.g. commented), then all LVs are
auto-activated.

